package com.yunshang.shoppingmall.ShopTask;

import com.yunshang.shoppingmall.service.*;
import com.yunshang.shoppingmall.service.User.UserRankService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;


@Component
public class Export {
    @Autowired
    UserRankService userRankService;
    @Autowired
    CartService cartService;
    @Autowired
    ExportOrderService exportOrderService;
    @Autowired
    OrderExportService orderExportService;
    @Autowired
    DemolitionOrderService demolitionOrderService;
    @Autowired
    AddressService addressService;
    @Autowired
    ConfigService configService;
    @Autowired
    OrderService orderService;
    @Autowired
    ExportService exportService;
    @Scheduled(cron="0 0 09,13 * * ?")//每天下午1点 早上9点触发
    public void exportExcel() {
        exportService.exportExcel();
    }

//    public void exportExcel() {
//        List<RemoveUserAndAddress> listOther=new ArrayList<>();//存放去重的用户收货信息
//        List<OrderExport> listEx1 = orderExportService.getOrderExportData1();//
//        List<OrderExport> listEx2 = orderExportService.getOrderExportData2();//
//        listEx1.addAll(listEx2);
//        List<OrderExport> list = listEx1;//导单数据
//        List<OrderExport> listTemp=new ArrayList<>();//特殊产品
//        List<OrderExport> listTempOther=new ArrayList<>();//特殊以外的其他产品数据
//        List<OrderExport> listTempSupplier=new ArrayList<>();//供货商产品数据
//        List<DemolitionOrder> demolitionOrders=demolitionOrderService.selectAll();//需要进行拆单的基础数据
//        HashSet<String> hashSet=new HashSet<>();//订单编号
//        int number=0;//导单数量
//        int up=0;
//        //excel标题
//        String[] title = {"业务单号","收件人姓名","收件人手机","收件人地址","品名","数量","备注","订单号"};
////        String[] title = {"业务单号","收件人姓名","收件人手机","收件人地址","品名","数量","备注"};
//        //excel文件名
//        String fileName = "物流导单"+System.currentTimeMillis()+".xls";
//        //业务单号
//        DateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
//        String busidstr = format2.format(new Date());
//        //sheet名
//        String error="";
//        String sheetName = "HSYS"+busidstr;
//        OrderExport errorOO=new OrderExport();
//        Set<String> listSupplier=new HashSet<>();
//        String supName="";
//        String suname="贵州荟生生物科技有限公司";
//        try {
//            for (int i = 0; i < list.size(); i++) {
//                OrderExport orderExport = list.get(i);
//                String supplier = orderExport.getSupplier() == null ? "" : orderExport.getSupplier();
//                if ("".equals(supplier)) {
//                    supName = "未知";
//                } else {
//                    supName = supplier;
//                }
//                if(!supName.equals(suname)){
//                    listSupplier.add(supName);
//                }
//
//                errorOO = list.get(i);
//                String[] strings = orderExport.getOrderNo().split(",");
//                if (strings.length == 1) {
//                    hashSet.add(orderExport.getOrderNo());
//                } else {
//                    for (String str : strings) {
//                        hashSet.add(str);
//                    }
//                }
//                //获取所有用户收货信息
//                RemoveUserAndAddress orderExport1 = new RemoveUserAndAddress();
//                //2为正常下单 1换产品
////                orderExport1.setUserId(orderExport.getUserId());
//                orderExport1.setLogname(orderExport.getLogname());
//                orderExport1.setPhone(orderExport.getPhone());
//                orderExport1.setAddressAll(orderExport.getAddressAll());
//                String name = list.get(i).getGuigeName1();
//                //orderExport1.setAddressId(orderExport.getAddressId());
//                listOther.add(orderExport1);
//                //获取所有用户收货信息结束
//                int productId = 0, guigeId = 0, productCount = 0;
//                productId = list.get(i).getProductId();
//                guigeId = list.get(i).getGuigeId();
//                productCount = list.get(i).getProductCount();
//                //判断产品大于一定数量是否拆单 &&productCount>str.getNumber()  &&productCount>str.getNumber()
//                int finalProductId = productId;
//                int finalGuigeId = guigeId;
//                //判断产品大于一定数量是否拆单 &&productCount>str.getNumber()  &&productCount>str.getNumber()
//                boolean isChai = demolitionOrders.stream().anyMatch(str -> (finalProductId == str.getProductid() && finalGuigeId == str.getGuigeid() && str.getType() == 1));
//                boolean isChai1 = demolitionOrders.stream().anyMatch(str -> (finalProductId == str.getProductid() && finalGuigeId == str.getGuigeid() && str.getType() == 2));
//                if (!suname.equals(supName)) {
//                    listTempSupplier.add(orderExport);
//                } else if (isChai) {//类型为1拆单
//                    for (int n = 0; n < productCount; n++) {
//                        OrderExport orderExportTemp = orderExport;
//                        orderExportTemp.setGuigeName(name + "*" + 1);
//                        listTemp.add(orderExportTemp);
//                        System.out.println("a5");
//                        number++;
//                    }
//                } else if (isChai1) {//类型为2拆单
//                    int c = productCount / 6;// a-(a/b)*b
//                    if (c == 1) {//单瓶整除为1
//                        OrderExport orderExportTemp = exportService.orderGroup(orderExport);
//                        orderExportTemp.setGuigeName(name + "*" + 6);
//                        listTemp.add(orderExportTemp);
//                        System.out.println("a4");
//                        number++;
//                    }
//                    if (c > 1) {//单瓶整除大于1
//                        for (int n = 0; n < c; n++) {
//                            OrderExport orderExportTemp = exportService.orderGroup(orderExport);
//                            orderExportTemp.setGuigeName(name + "*" + 6);
//                            listTemp.add(orderExportTemp);
//                            System.out.println("a3");
//                            number++;
//                        }
//                    }
//                    if (productCount % 6 != 0) {//处理剩下不到一件的
//                        int d = productCount - (productCount / 6) * 6;
//                        OrderExport orderExportTemp = exportService.orderGroup(orderExport);
//                        orderExportTemp.setGuigeName(name + "*" + d);
//                        System.out.println("a2");
//                        listTemp.add(orderExportTemp);
//                        number++;
//                    }
//                } else {
//                    //添加到特殊产品拆单以外的其它集合
//                    listTempOther.add(orderExport);
//                }
//            }
//            List<String> listSup = new ArrayList<>(listSupplier);
//            //根据用户合并其它产品
//            //去除用户重复的收货信息
//            List<RemoveUserAndAddress> list1 = exportService.removeDuplicate(listOther);
//
//            //根据去重的用户收货信息进行整合特殊以外产品信息
//            //  list1.forEach(item ->{
//            List<OrderExport> listTempXX = new ArrayList<>();
//            for (String str : listSupplier) {
//                //System.out.println("listSupplier:"+str);
//                for (RemoveUserAndAddress item : list1) {
//                    List<OrderExport> list2 = listTempSupplier.stream().filter(c -> (
//                            c.getLogname() != null && c.getLogname().equals(item.getLogname()) &&
//                                    c.getPhone() != null && c.getPhone().equals(item.getPhone()) &&
//                                    c.getAddressAll() != null && c.getAddressAll().equals(item.getAddressAll()))
//                    ).collect(Collectors.toList());
//                    Collections.sort(list2, Comparator.comparingInt(OrderExport::getProductCount));//根据数量排序
//                    if (list2 != null && list2.size() > 0) {
//                        listTempXX = exportService.assOrderDataName(list2,str);
//                    }
//                    if (list2 != null && list2.size() > 0) {
//                        if(listTempXX!=null&&listTempXX.size()>0){
//                            List<OrderExport> list1q=listTempXX.stream().filter(c -> (!c.getOrderNo().equals("null")&&!c.getOrderNo().equals("")))
//                                    .collect(Collectors.toList());
//                            listTempXX=list1q;
//                            listTemp.addAll(listTempXX);
//                            number = number + listTempXX.size();
//                        }
//                    }
//                }
//            }
//            //System.out.println("listTemp1:"+listTempXX);
//            //System.out.println("listTempOther:"+listTempOther.size());
//            for (RemoveUserAndAddress item : list1) {
//                List<OrderExport> list2 = listTempOther.stream().filter(c -> (
////                                    c.getUserId()!=null&&c.getUserId().equals(item.getUserId())&&
//                                c.getLogname() != null && c.getLogname().equals(item.getLogname()) &&
//                                        c.getPhone() != null && c.getPhone().equals(item.getPhone()) &&
//                                        c.getAddressAll() != null && c.getAddressAll().equals(item.getAddressAll()))
//                ).collect(Collectors.toList());
//                Collections.sort(list2, Comparator.comparingInt(OrderExport::getProductCount));//根据数量排序
//                List<OrderExport> listTemp1 = new ArrayList<>();
//                if (list2 != null && list2.size() > 0) {
//                    listTemp1 = exportService.assOrderData(list2);
//                }
//
//                if (list2 != null && list2.size() > 0) {
//                    if(listTemp1!=null&&listTemp1.size()>0){
//                        listTemp.addAll(listTemp1);
//                        number = number + listTemp1.size();
//                    }
//                }
//                //System.out.println("listTemp2:"+listTemp1);
//            }
//
//        }catch(Exception e){
//            up = 1;
//            error = e.toString() + "订单数据有误：" + errorOO.getOrderNo();
//        }
//        //组合数据添加到Excel
//        if(listTemp!=null&&listTemp.size()>0){
//            Collections.sort(listTemp, Comparator.comparing(OrderExport::getLogname));//排序
//        }
//
//        String [][] content=new String[listTemp.size()][];
//
//        //创建HSSFWorkbook
//        listSupplier.add(suname);
//        List<String> listSup1 = new ArrayList<>(listSupplier);
//        listSup1.remove(suname);
//        List<String> ss=new ArrayList<>();
//        ss.add(suname);
//        ss.addAll(listSup1);
//        HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook(sheetName, title, content, null,ss,listTemp);
//
//        //
//        String url="";
//        //保存excel
//        try {
//            String path="/usr/local/mall_uploads/logistics";
//            File uploadPath=new File(path);
//            if(!uploadPath.exists()){
//                uploadPath.mkdirs();
//            }
//            System.out.println("surl:"+uploadPath+"/"+fileName);
//            FileOutputStream fileOut = new FileOutputStream(uploadPath+"/"+fileName);
//            url="/logistics/"+fileName;
//            wb.write(fileOut);
//            fileOut.close();
//        }
//        catch (Exception e){
//            e.printStackTrace();
//            up=1;
//        }
//        //响应到客户端
//
//        if(up==0){
//            //更新为导单状态
//            List lists=null;
//            try {
//                Object[] list1X=hashSet.toArray();
//                String[] stringArray = Arrays.copyOf(list1X, list1X.length, String[].class);
//                lists = java.util.Arrays.asList(stringArray);
//            }catch (Exception e){
//                System.out.println(e.getMessage());
//            }
//            if(lists!=null&&lists.size()>0){
//                String orderNos=hashSet.toString().trim().replace('[','(').replace(']',')');
//                int res=orderService.upOrderFrom(lists);
//                ExportOrder exportOrder=new ExportOrder();
//                exportOrder.setNumber(number);
//                exportOrder.setType(1);
//                exportOrder.setTypename("快递");
//                exportOrder.setUrl(url);
//                exportOrder.setTime(new Date());
//                exportOrder.setOrdernos(orderNos);
//                exportOrder.setAdminuserid(10);
//                int res1=exportOrderService.insertSelective(exportOrder);
//            }
//        }
//    }
}
